import CryptoJS from "crypto-js";

// 解密密钥和偏移量
const KEY = "wjrbshalkcjkerw1"; // 16字节密钥
const IV = "wjrbshalkcjkerw1"; // 16字节偏移量

/**
 * 十六进制字符串转二进制数据
 * @param {string} hexStr - 十六进制字符串
 * @returns {CryptoJS.lib.WordArray} - 二进制数据
 */
function hexToWordArray(hexStr) {
  return CryptoJS.enc.Hex.parse(hexStr);
}

/**
 * AES 解密函数
 * @param {string} encryptedHex - 十六进制加密字符串
 * @returns {string} - 解密后的字符串
 */
export function aesDecrypt(encryptedHex) {
  try {
    // 将十六进制字符串转换为二进制数据
    const encryptedWordArray = hexToWordArray(encryptedHex);

    // 解密
    const decrypted = CryptoJS.AES.decrypt(
      { ciphertext: encryptedWordArray },
      CryptoJS.enc.Utf8.parse(KEY),
      {
        iv: CryptoJS.enc.Utf8.parse(IV),
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7,
      }
    );

    // 返回解密后的字符串
    return decrypted.toString(CryptoJS.enc.Utf8);
  } catch (error) {
    console.error("AES解密失败:", error);
    return encryptedHex; // 解密失败返回原始数据
  }
}
